<TITLE>HyperText Design Issues: Annotation</TITLE>
<NEXTID 6>
<H1>The problem of linking to living documents</H1>See also: Annotation, <A NAME=5 HREF=Multiuser.html>Multiuser considerations</A>.<P>
A problem arises when one user wants to refer to a portion of another
document to which he does not have write access.  The reference to
a part of the document must remain as valid as possible when the document
is updated. <P>
The solution set is as follows: take your pick.
<H2>The document is frozen.</H2>This in fact applies nicely to mail messages and news articles which,
once published, are unretractable.  You can refer to a part of these
messages by character range (line and character etc).
<H2>Versions are kept.</H2>If the document itself is not frozen, one can still refer to a particular
version of it if a record of versions is kept.  This requires that
the server provdie an additional protocol funtion, which is to tell
a client exactly which part (if any) of the current version of a document
is the part corresponds to a particular part of  an older version.
 This translation can be <A NAME=3>generated automatically</A> by the "diff" engine
used by most source code control systems. These systems do not always
work: a smart editor would be able to keep better track.<P>
This is an interesting option, because the operations needed to do
it are the same as those needed for putting links onto plain text
documents and keeping track of versions, both of which are important
aspects of collaborative software design.<P>
(See also: <A NAME=2 HREF=Versioning.html>versioning</A> )
<H2>The document is writable by the annotater.</H2>In this case, when the person refering to the document has write access
to it, he can insert marks. This is the way the current (1992) NeXTStep
editor works: it embeds anchors in the destination document. If the
document is later edited, the anchors are moved around with the text,
though in some cases (drastic rewriting) they can disappear.
<H2>Everything is numbered</H2>This solution requires the author (or rather, the author's editing
program) to give unique identifiers to every part of a document which
can be the destination of a link.  This is not in fact a ridiculous
overhead if handled efficiently.    There must be a certain granularity
(paragrpah, for example) which prevents people linking to precise
words, and this is a drawback.
<H2>Linking by context</H2>In this case, the annotater refers to a part of the document by the
context: for example, he quotes the first and last pieces. See for,
example, the section "In this case...". This method is clearly heuristic
and prone to failures just as is the <A NAME=4 HREF=#3>automatic generation</A> of differences
above..</A>